package com.miracle.erp.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.miracle.erp.service.IUserService;
import com.miracle.erp.service.Impl.UserService;
import com.miracle.erp.util.AjaxObj;
import com.miracle.erp.util.ERPException;
import com.miracle.erp.util.ObjectFactory;
import com.miracle.erp.model.User;

@WebServlet("/login")
public class LoginServlet extends HttpServlet{
	/**
	 * 向后端传输用户输入的信息 封装
	 */
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
			// 设置响应类型
			resp.setContentType("text/html;charset=utf-8");
			// 获取用户输出信息 req.getParamter();
			String username = req.getParameter("username");
			String password = req.getParameter("password");
			System.out.println("用户名："+username+"，密码："+password);
			
			// 能接收到密码了 将密码封装给user
			User user = new User();
			user.setUsername(username);
			user.setPassword(password);
			// 进行逻辑操作 service
			// 所有要调用UserService  既然调用就一定要创建对象
//			IUserService UserService = new UserServiceImpl();
			// 但是 这样创建 类与类之间的关联就变强了 使用工厂统一创建   静态
			IUserService userService = ObjectFactory.getUserService();
			// 用这个对象去调用 逻辑操作的方法 入参是user 出参应该也是user  
			// 用一个新的对象来接收 出参传回来的用户信息
			try {
				User loginUser = userService.login(user);
				// loginUser 现在装有了信息 将信息保存在会话中
				req.getSession().setAttribute("loginUser",loginUser);
				// 登陆成功
				// 内部逻辑完成了 此时应该考虑用ajax响应给页面   
				resp.getWriter().println(new AjaxObj(1,"登陆成功").toJSON());
				System.out.println("登陆成功");
				
			} catch (ERPException e) {
				// TODO Auto-generated catch block
				String msg = e.getMessage();
				System.out.println(msg);
				resp.getWriter().println(new AjaxObj(0,msg).toJSON()); 
			}
	}
}
